class D:

    def __bool__(self):
        print("魔法方法__bool__ 被执行")
        return True


d = D()
bool(d)
# 魔法方法__bool__ 被执行

print("================================================================================" * 3)


# 但是，如果没有 __bool__ 方法，Python 就回去找 len() 方法，如果 len 返回0 为False，否则为True

class E:

    def __init__(self, data):
        self.data = data

    def __len__(self):
        print("魔法方法 __len__ 被执行")
        return len(self.data)


e = E("FishC")
bool(e)
# 魔法方法 __len__ 被执行

e_2 = E("")
bool(e_2)
# 魔法方法 __len__ 被执行
